import logging
from logging.handlers import RotatingFileHandler

import redis
from flask import Flask

app=Flask(__name__)



# 创建初始化配置类
class Config(object):

    """#创建初始化配置类"""
    DEBUG=True
    # 链接mysql数据库
    SQLALCHEMY_DATABASE_URI='mysql://root:mysql@127.0.0.1:3306/information'
    SQLALCHEMY_TRACK_MODIFICATIONS=False
    SQLALCHEMY_COMMIT_ON_TEARDOWN = True
    # base64.b64encode(os.urandom(48))
    SECRET_KEY='BTRBUtyNQdF50UQ+0rzYAiL4/iRcWJ3P26DEfttGFgW5PXXf/eJEhUXsPAIAcopc'
    # redis 的配置信息
    REDIS_HOST='127.0.0.1'
    REDIS_PORT = 6379

    # Session 配置信息
    SESSION_TYPE='redis' # 指定session存放到redis里
    SESSION_USE_SIGNER=True # 让session中的session_id 被加密标签处理
    SESSION_REDIS=redis.StrictRedis(host=REDIS_HOST,port=REDIS_PORT) # 使用redis实例
    PERMANENT_SESSION_LIFETIME=84600*2 # 设置session过期时间
    LOG_LEVEL=logging.DEBUG


class DevelopmentConfig(Config):
    DEBUG = True
    LOG_LEVEL = logging.DEBUG

class ProductionConfig(Config):
    DEBUG = False
    LOG_LEVEL = logging.INFO

config={
    'development':DevelopmentConfig,
    'config':Config,
    'production':ProductionConfig
}
def set_log(config_name):
    # 设置日志的记录等级
    logging.basicConfig(level=config[config_name].LOG_LEVEL)  # 调试debug级
    # 创建日志记录器，指明日志保存的路径、每个日志文件的最大大小、保存的日志文件个数上限
    file_log_handler = RotatingFileHandler("logs/log", maxBytes=1024 * 1024 * 100, backupCount=10)
    # 创建日志记录的格式 日志等级 输入日志信息的文件名 行数 日志信息
    formatter = logging.Formatter('%(levelname)s %(filename)s:%(lineno)d %(message)s')
    # 为刚创建的日志记录器设置日志记录格式
    file_log_handler.setFormatter(formatter)
    # 为全局的日志工具对象（flask app使用的）添加日志记录器
    logging.getLogger().addHandler(file_log_handler)